Conventional graphics processors are exemplified by systems and methods developed to read and filter texture map samples. To simplify the texture map filtering performed within a graphics processor, a texture is prefiltered and various resolutions of the prefiltered texture are stored as mip mapped texture maps. FIG. 1A is a conceptual diagram of prior art showing a mip mapped texture including a highest resolution texture map, Texture Map 101. A Texture Map 102, a Texture Map 103, and a Texture Map 104 are successively lower resolution texture maps, mip maps, each storing prefiltered texture samples.
Classic mip maps are isotropically filtered, i.e. filtered symmetrically in the horizontal and vertical directions using a square filter pattern. Bilinearly filtered and trilinearly filtered mip maps result in high quality images for surfaces with major and minor texture axis that are similar in length. When a trilinearly filtered texture is applied to a receding surface viewed “on edge”, aliasing artifacts (blurring) become apparent to a viewer as the texture is effectively “stretched” in one dimension, the receding direction, as the texture is applied to the surface. FIG. 1B illustrates a prior art application of Texture Samples 110 to a Pixel 120 of a receding surface (in texture space). A Minor Axis 125 is significantly shorter than a Major Axis 130 and isotropic filtering of the texture samples will result in aliasing artifacts.
In contrast to isotropic filtering, anisotropic filtering uses a rectangular shaped filter pattern, resulting in fewer aliasing artifacts for surfaces with major and minor texture axis that are not similar in length. FIG. 1C illustrates a prior art application of anisotropic filtering to Pixel 120. Texture Samples 150 are aligned along Major Axis 130. Each sample within Texture Samples 150 may be read from a different mip map. Texture Samples 150 are anisotropically filtered to produce a filtered texture sample. Classic anisotropic filtering filters 16 texture samples in a non-square pattern, compared with 8 texture samples filtered when trilinear filtering is used or 4 texture samples filtered when bilinear filtering is used. Therefore, anisotropic filtering reads and processes twice as many texture samples as trilinear filtering.
In general, producing a higher-quality image, such as an image produced using anisotropic filtering, requires reading more texture samples and performing more complex operations to produce each filtered texture sample. Therefore texture sample filtering performance decreases as image quality improves, due to limited bandwidth available for reading texture samples stored in memory and limited computational resources within a graphics processor.
Accordingly, there is a need to balance performance of anisotropic texture sample filtering with image quality to minimize image quality degradation for a desired level of anisotropic texture sample filtering performance.